/*
 * @Description: 埋点监控用户点击事件
 */
function userOperateRecorder() {


    // 获取到页面所有的被监听的元素，即具有自定义属性“data-listened”的元素
    const listenedEles = document.querySelectorAll("[data-listened]") || [];

    // 遍历所有被监听的元素，并添加监听事件
    listenedEles.forEach(ele => {
        // 当被点击后，获取到被点击元素的业务类型，即自定义属性“data-listened”的属性值
        ele.onclick
            = function () {
                // 暂时收集起来，设置定时任务进行上报（提交给服务端）并清空
                recordCollecter(ele.getAttribute("data-listened"))
            }
    })

    // 点击事件将会记录在这里
    let records = [];

    // 点击事件收集器
    function recordCollecter(type) {
        // 这里上传的列表属性就要根据自己情况定了，暂定一个type和时间戳作为演示
        records.push({ type, time: new Date() })
    }

    // 1、定时上报（5s）
    // 2、上报后重新收集
    setInterval(() => {
        if (records.length > 0) {
            setTimeout(() => {
                console.log(records);// 1、定时上报，这里要换成上报接口但是我没有开发，暂时打印出来作为演示
                records = [];// 2、上报后重新收集，这里在清空的时候不会漏记
            }, 0);
        }
    }, 5000)
}
export default userOperateRecorder;